[小ネタ] AWS Elemental MediaConvert を使って静止画からタイムコード付きの動画ファイルを作成する
こんにちは、大前です。今日は小ネタです。
AWS MediaServices で検証を行う際には、検証用の動画ファイルが必要になる事が多いです。
OBS 等で配信を行う際には PC カメラで顔元の映像を使用しても良いのですが、遅延がどのくらい発生しているか、等をきちんと確認したい際には下記の様なタイムコードつきの動画があると便利です。
また、AWS Elemental MediaConvert(以下 MediaConvert) では動画変換時にタイムコードを挿入する事が可能だったりします。
今回は、この機能を使って、好きな画像からタイムコード付きの検証用動画を作成してみたいと思います。
やってみた
元画像の準備
何はともあれ、動画に変換する元画像を用意します。
なんでも良いのですが、今回は めそ子オフィシャルサイト より壁紙を拝借しました。
190711_Mesoko_Jul_1920x1080.png
かわいい
画像を動画に変換
早速 MediaConvert でタイムコード付きの動画に変換していきたい所ではあるのですが、MediaConvert は画像ファイルを入力として受け付けていません。
その為、まずは画像ファイルを動画ファイルに変換する必要があります。
方法としては色々あるかと思いますが、今回は FFmpeg を使用します。
FFmpeg がインストールされていない場合には、以下などを参考にインストールを実施してください。
HomebrewでMacにFFmpegをインストールする方法と使い方
適当なディレクトリに画像ファイルを配置し、以下コマンドを叩きます。
ffmpeg -loop 1 -i 190711_Mesoko_Jul_1920x1080.png -vcodec libx264 -pix_fmt yuv420p -t 600 -r 30 190711_Mesoko_Jul_1920x1080.mp4
細かい説明は省きますが、-t 600
の部分が出力される動画の長さになります。単位は秒なので、600 だと 10分の動画として出力されます。必要に応じて変更してください。
FFmpeg のコマンドについては、下記の記事を参考にさせて頂きました。
MediaConvert でタイムコード挿入
では、いよいよ MediaConvert を使用してタイムコードを付けていきます。
事前に、FFmpeg で作成した動画ファイルは S3 にアップロードしておきましょう。
「MediaConvert > ジョブの作成」よりジョブの作成画面を開き、入力の「Input file URL」にアップロードした動画ファイルを指定します。
「出力グループ > 追加」より、「ファイルグループ」を選択します。
「File Group」を選択し、「送信先」に変換後の動画ファイルを出力する S3 バケットを指定します。
「Output1」を選択し、「解像度」を入力します。今回は元ファイルに合わせて 1920 x 1080 としました。
そのまま下部にスクロールし、「ビットレート」を入力します。今回は 5000000 としました。
さらに下部にスクロールすると、「タイムコードの書き込み」という選択項目があるので、こちらを有効にして以下設定を行います。
これがタイムコードを動画に付けるための設定です。
- フォントサイズ ... ラージ(48)
- 位置 ... 中央
最後に、「ジョブの設定 > 設定」から「IAM ロール」を設定します。
ロールがない場合には以下にしたがって作成しておきましょう。
これで一通りの設定は完了です。画面右下にある「作成」をクリックするとジョブが開始され、少し待つとステータスが COMPLETE となるはずです。
出力先として設定していた S3 バケットからファイルを DL して確認してみると、タイムコードが挿入されていることが確認できました。
おわりに
AWS Elemental MediaConvert を使用してタイムコードを挿入する方法を紹介しました。
小ネタではありましたが、検証用動画に困っている際には参考にしてみてください。
以上、AWS 事業本部の大前でした。